# 在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。
# 例如，链表1->2->3->3->4->4->5 处理后为 1->2->5


# 注意，题目的要求是，重复的，包括自己，都删掉
# 而且注意，他是排序链表，就是说，不会出现：1->2->1>2->3这种情况
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None


# 这道题麻烦在于，不是说一出现不重复的就加进来，而是，出现了和前面不重复的，你还得判断，他后面有没有一样的，没有，才加进来
class Solution:
    def deleteDuplication(self, pHead):
        # write code here
        # write code here
        if not pHead:
            return pHead
        temp = []
        temp_val = []
        while pHead:
            temp.append(pHead)
            temp_val.append(pHead.val)
            pHead = pHead.next
        temp_index = []  # 保存完全没有重复的元素
        for i in range(len(temp)):
            if temp_val.count(temp[i].val) == 1:
                temp_index.append(temp[i])
        if len(temp_index)==0:
            return None
        temp_index[-1].next = None
        res = temp_index.pop(0)
        result = res
        while len(temp_index)>0:
            res.next = temp_index.pop(0)
            res = res.next

        return result

# 以下是测试验证
node1 = ListNode(1)
node2 = ListNode(1)
node3 = ListNode(2)
node4 = ListNode(3)
node5 = ListNode(3)
node6 = ListNode(4)
node7 = ListNode(5)
node8 = ListNode(5)

node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
node6.next = node7
node7.next = node8

sol = Solution()
print(sol.deleteDuplication(node1))
